import time
from faker import Faker
from tools.handle_mysql import HandleMysql


# 后续优化，添加sql查询数据在，若数据在DB库存在，则不使用，不存在，则使用
class HandlePhoneName:
    def __init__(self):
        # 初始化Faker库
        self.fk = Faker(locale='zh-CN')
        # 实例化HandleMysql()模块，方便后续代码调用
        self.hmysql = HandleMysql()

    # 通过Faker库，生成随机号码，并且使用随即号码去数据库查询，若数据库不存在此号码，则生成
    def get_new_phone(self):
        while True:
            new_phone = self.fk.phone_number()
            sql = f'SELECT * FROM t_user WHERE phone={new_phone}'
            count = self.hmysql.get_count(sql)
            if count == 0:
                return new_phone

    # 查询数据库，获取固定的手机号码
    def get_exists_phone(self):
        sql = 'SELECT phone FROM t_user WHERE phone=15012768506'
        exists_phone = self.hmysql.get_query_sql_results(sql)
        return exists_phone["phone"]

    # 通过Faker库，生成随机姓名，并且使用随机姓名去数据库查询，若数据库不存在此姓名，则生成
    def get_new_user_name(self):
        while True:
            fk_name = self.fk.name()
            new_user_name = fk_name + "测试"
            sql = f'SELECT * FROM t_user WHERE user_name="{new_user_name}"'
            count = self.hmysql.get_count(sql)
            if count == 0:
                return new_user_name


if __name__ == '__main__':
    hp = HandlePhoneName()
    print('生成新的手机号为', hp.get_new_phone())
    print('生成新的用户名为', hp.get_new_user_name())
    print('获取已存在的手机号为', hp.get_exists_phone())
    print(time.strftime('%Y-%m-%d %H:%M:%S'))
